package com.imooc.coupon.constant;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Objects;
import java.util.stream.Stream;

/**
 * 商品类型枚举类
 *
 * Created By TINY
 * Create Time 2020/2/10
 **/
@Getter
@AllArgsConstructor
public enum GoodsType {

    GAME_ITEM("游戏道具", 1), ELECT_BOOK("电子书籍", 2),
    REAL_BOOK("实体书籍", 3), ALL("所有类别", 4);

    /** 商品类型描述 */
    private String description;

    /** 商品类型编码 */
    private Integer code;

    /** 根据 code 获取对应的枚举类型 */
    public static GoodsType of(Integer code) {

        Objects.requireNonNull(code);
        return Stream.of(values()).filter(v -> v.code.equals(code))
                .findAny().orElseThrow(
                        () -> new IllegalArgumentException(
                                code + " 对应的商品类型不存在！"));
    }
}
